/**
 * 文档作者: wj
 * 创建时间：2018年05月26日
 * 修改时间：2018年05月26日
 * 描述信息：评价页面
 */

import React, {Component} from 'react';
import './evaluation.scss';
import util from '../../util/util';
import userModel from '../api/user.model';
import windowService from '../api/window.service';

class Evaluation extends Component {
    constructor(props) {
        super(props);
        this.state = {
            level: [0, 0, 0, 0, 0],
            star: 0,
            error: ''
        }
    }

    render() {
        return <div className='evaluation-page top-center'>
            <div className='header both-left-center'>
                <span>星级</span>
                {
                    this.state.level.map((value, index) => { 
                        return <img key={index}
                        onClick={this.onSelect.bind(this, index)}
                        alt='star' 
                        src={require(`../../assets/img/${value === 2 ? 'star' : 'no_star'}.png`)} />
                    })
                }
            </div>
            <textarea onChange={this.onChangeValue.bind(this)} ref='content' placeholder='友善发言，运气更好'></textarea>
            <button className='btn grean' onClick={this.onSubmit.bind(this)}>确定</button>
            <p className='error'>{this.state.error}</p>
        </div>
    }

    /**
     * 选择星数
     * @param {Number} index 索引
     */
    onSelect(index) {
        this.state.level.fill(0);
        const arr = JSON.parse(JSON.stringify(this.state.level));
        this.setState({
            level: arr.fill(2, 0, index + 1),
            star: index + 1,
            error: ''
        })
    }

    /**
     * 文本框发生变化
     */
    onChangeValue() {
        this.setState({
            error: ''
        })
    }

    /**
     * 提交
     */
    onSubmit() {
        if ((this.refs.content.value).trim() === '') {
            this.setState({
                error: '请输入内容'
            })
        } else if (this.state.star === 0) {
            this.setState({
                error: '请选择星数'
            })
        } else {
            const obj = windowService.getSaveOrderNode();
            obj.cmtStar =this.state.star;
            obj.cmtStr = this.refs.content.value;
            obj.isCmt = 1;
            util.getApiData('post', '/svcShop/svcCmtSingleOps', obj);
            util.getApiData('post', '/svcShop/svcCmtSingleOps', Object.assign({
                uid: userModel.svcRegWithWx.uid,
                apptoken: userModel.svcRegWithWx.apptoken,
                ops_type: 'update'
            }, obj)).then(res => {
                if (res.data.res === 1) this.props.history.push(`/order`);
            });

        }
    }
}

export default Evaluation
